// 引入mongoose
const mongoose = require("mongoose");
// 引入放映厅模型
const { theatersModel } = require("../db/model/theaters");

// 获取服务端传到数据库的数据{curPage,eachPage}
const get = async ({ curPage, eachPage }) => {
  curPage = ~~curPage;
  eachPage = ~~eachPage;
  const data = {
    total: 0,
    maxPage: 0,
    rows: [],
  };

  // 通过model方法获取模型 一个参数获取 三个参数创建
  // const theatersModel = mongoose.model("theaters");
  // 获取当前model映射的集合里面存在的文档总数
  data.total = await theatersModel.countDocuments();
  data.maxPage = Math.ceil(data.total / eachPage);
  // 跳过数据条数
  const skipNum = (curPage - 1) * eachPage;
  // 查询所有数据，并跳过skipnum条，查eachpage条并执行
  data.rows = await theatersModel.find().skip(skipNum).limit(eachPage).exec();
  return data;
};
//add方法在数据库中新增放映厅
const add = async ({
  name, // 放映厅名字
  status, // 放映厅是否营业（可选）
  cinemasId, // 放映厅从属的影院
}) => {
  const theatersModel = mongoose.model("theaters");
  return await theatersModel.create({
    name, // 放映厅名字
    status, // 放映厅是否营业（可选）
    cinemasId, // 放映厅从属的影院
  });
};
//delete方法在数据库中删除放映厅
const delTheaters = async (_id) =>
  await mongoose.model("theaters").deleteOne({ _id });

// 查询放映厅   排片用的
const searchone = async (cinemasId) => {
  return await mongoose
    .model("theaters")
    .find({ cinemasId })
    .populate("cinemasId")
    .exec();
};

//查看所有放映厅
const findTheaters = async ({ curPage, eachPage }) => {
  const result = {
    // 当前页
    curPage: ~~curPage,
    // 每页显示条数
    eachPage: ~~eachPage,
    // 总条数
    total: 0,
    // 总页数
    maxPage: 0,
    // 用来描述放映厅的数据列表
    rows: [],
  };
  const theatersModel = mongoose.model("theaters");
  // 总条数
  result.total = await theatersModel.countDocuments();
  // 总页数
  result.maxPage = Math.ceil(result.total / result.eachPage);
  result.rows = await theatersModel
    // 操作类型
    .find()
    // 渲染
    .populate("cinemasId")
    // 忽略条数
    .skip((result.curPage - 1) * result.eachPage)
    // 查找条数
    .limit(result.eachPage)
    // .sort({_id:-1})
    // 执行
    .exec();
  return result;
};
//更新放映厅信息
const changeTheaters = async (theater) =>
  await mongoose.model("theaters").updateOne({ _id: theater._id }, theater);
//查找一个放映厅
const findTheatersOne = async (_id) =>
  await mongoose
    .model("theaters")
    .findOne({ _id })
    .populate("cinemasId")
    .exec();

    
//查找对应放映厅
const findTheatersMore = async (cinemasId) =>
  await mongoose
    .model("theaters")
    .find({ cinemasId })
    .populate("cinemasId")
    .exec();
// 暴露方法接口
module.exports = {
  get,
  add,
  delTheaters,
  findTheaters,
  changeTheaters,
  findTheatersOne,
  searchone,
  findTheatersMore,
};
